org 0x7c00
[bits 16]
xor ax, ax ; eax = 0
; 初始化段寄存器, 段地址全部设为0
mov ds, ax
mov ss, ax
mov es, ax
mov fs, ax
mov gs, ax

; 初始化栈指针
mov sp, 0x7c00
mov ax, 1                ; 逻辑扇区号第0~15位
mov cx, 0                ; 逻辑扇区号第16~31位
mov bx, 0x7e00           ; bootloader的加载地址
load_bootloader:
    call asm_read_hard_disk  ; 读取硬盘
    inc ax
    cmp ax, 5
    jle load_bootloader
jmp 0x0000:0x7e00        ; 跳转到bootloader

jmp $ ; 死循环

asm_read_hard_disk:                           
; 从硬盘读取一个逻辑扇区
;CH=柱面；CL=扇区；DH=磁头；DL=驱动器

; 返回值
; bx=bx+512
     push ax
     mov cx, 0x0002
     mov dx, 0x0080
     mov ax, 0x0201
     
     int 13h
     
     pop ax
     ret
    
    

times 510 - ($ - $$) db 0
db 0x55, 0xaa
